package todo;

import interfaces.ModelToDo;

import java.util.LinkedList;

import javax.swing.DefaultListModel;

/**
 * Implementierung des Interface ModelTodo Klasse repräsentiert die Funktionen
 * der Aufgabenverwaltung
 * 
 * @author Michi
 * 
 */
public class MyModelToDo implements ModelToDo {

	/**
	 * Member data
	 */
	LinkedList<MyTask> tasklist;

	/**
	 * Konstruktor
	 */
	public MyModelToDo() {
		this.tasklist = new LinkedList<MyTask>();
	}

	/**
	 * Konstruktor der eine AufgabenListe übernimmt
	 * 
	 * @param tasks
	 *            Liste mit gespeicherten Aufgaben
	 */
	public MyModelToDo(LinkedList<MyTask> tasks) {
		this.tasklist = tasks;
	}

	// Getter & Setter Bereich

	public LinkedList<MyTask> getTasklist() {
		return tasklist;
	}

	public void setTasklist(LinkedList<MyTask> tasklist) {
		this.tasklist = tasklist;
	}

	@Override
	public void addTask(MyTask task) {
		tasklist.add(task);

	}

	@Override
	public void removeTask(MyTask task) {
		tasklist.remove(task);

	}

	@Override
	public void setData() {
		// TODO bearbeiten button speichert gemachte ver�nderungen...

	}

	@Override
	public MyTask getNextTask(MyTask task) {
		for (int i = 0; i < tasklist.size(); i++) {
			if (tasklist.get(i).equals(task)) {
				if (i != tasklist.size() - 1) {
					return tasklist.get(i + 1);
				}

			}

		}

		return null;
	}

	@Override
	public MyTask getPrevTask(MyTask task) {
		for (int i = 0; i < tasklist.size(); i++) {
			if (tasklist.get(i).equals(task)) {
				if (i != 0) {
					return tasklist.get(i - 1);
				}

			}

		}

		return null;
	}

	@Override
	public DefaultListModel createTaskList() {
		DefaultListModel dlm = new DefaultListModel();

		for (int i = 0; i < tasklist.size(); i++) {
			dlm.addElement(tasklist.get(i));

		}

		return dlm;
	}

}
